﻿using CarAppDto.Sys.AdminDtos;
using FluentValidation;

namespace CarAppDto.Sys.LoginDtos
{

    /// <summary>
    ///数据校验类要继承自 AbstractValidator
    ///通过 AbstractValidator 的泛型参数指定对哪个类进行校验
    /// </summary>
    public class ReqLoginInputValidator : AbstractValidator<ReqLogin>
    {
        /// <summary>
        /// 校验规则写到校验类的构造方法中
        /// </summary>
        public ReqLoginInputValidator()
        {
            // 通过RuleFor来指定要对哪个属性进行校验
            // 多个校验规则可以采用链式调用的写法
            // 每个需要校验的属性对应一组RuleFor调用
            RuleFor(x => x.Account).NotNull().Length(6, 12).WithMessage("用户名必须6到12位");
            RuleFor(x => x.Password).NotNull().Length(6, 18).WithMessage("密码长度必须介于6到18之间");

            //RuleFor(x => x.Name).NotNull().Length(3, 10)
            //    .WithMessage("用户名必须3到10位");
            //RuleFor(x => x.Email).NotNull().EmailAddress()
            //    .Must(x => x.EndsWith("@163.com") || x.EndsWith("@qq.com"))
            //    .WithMessage("必须是163或qq邮箱");
            //RuleFor(x => x.Password1).NotNull().Length(5, 10)
            //    .WithMessage("密码长度为5到10")
            //    .Equal(x => x.Password2).WithMessage("两次密码必须相等"); 
        }
    }

    /// <summary>
    /// 登录请求参数
    /// </summary>
    public class ReqLogin
    {
        /// <summary>
        /// 账号
        /// </summary>
        public string? Account { get; set; }

        /// <summary>
        /// 密码
        /// </summary>
        public string? Password { get; set; }

        /// <summary>
        /// 验证码
        /// </summary>
        public string? VerificationCode { get; set; }
    }
}
